package com.wgy.day26.Map集合接口;
/*java.util.Map<K,V>集合接口
Map集合接口:例如Ip地址和主机名 身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射.
             java提供了专门的集合类用来存放这种对象关系的对象,即java.util.Map接口
 Map中的集合,元素是成对存在的(可理解成夫妻),每个元素由键与值两部分组成,通过键可以找到所对应的值
 Collection中的集合,元素是孤立存在的(可理解为单身),向集合中存储元素采用一个个元素的方式存储.
 Collection中的集合称为单列集合  Map中的集合称为双列集合

Map集合的特点:
 1.Map中的集合是一个双列集合,一个元素包含两个值(key,value)
 2.Map集合中的元素,key和value的数据类型可以相同,也可以不同
 3.Map集合中的元素,key是不允许重复的,但是value时可以重复的
 4.Map集合中的元素,key和value是一一对应的
 5.Map集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致

Map集合接口中定义的方法:
 public V put (K k,V value):把指定的键与指定的值添加到Map集合中 返回被替换的value值
                     返回值V:存储键值对的时候,key不重复,返回值v就是 null
                           存储键值对的时候,key重复,会使用新的的value值替换Map中重复的value,返回值v就是被替换的value值
 public V remove (Object key):把指定的键 所对应的键值对元素 在Map中删除,返回被删除元素的值
                      返回值V:key值存在,返回对应的value值
                             key值不存在,返回null
 public V get (Object key):根据指定的键 在Map集合中获取对应的值
 boolean containsKey (Object key):判断集合中是否包含指定的键

 public Set<K> keySet ():获取Map集合中所有的键,存储到Set集合中
 public Set<Map.Entry<K,V>> entrySet ():获取到Map集合中所有的键值对对象的集合(Set集合)
 */

import java.util.HashMap;
import java.util.Map;

public class Dome01Map {
    public static void main(String[] args) {
        show04();

    }

    public static void show01() {
        //创建Map集合对象,多态
        Map<String, String> map = new HashMap<>();
        // V put (K k,V value):把指定的键与指定的值添加到Map集合中  返回被替换的value值
        String v1 = map.put("李晨", "范冰冰1");
        System.out.println(v1);  //null
        String v2 = map.put("李晨", "范冰冰2");
        System.out.println(v2);  //范冰冰1
        System.out.println(map); //{李晨=范冰冰2}

        map.put("冷锋", "龙小云");
        map.put("杨过", "小龙女");
        map.put("尹志平", "小龙女");
        System.out.println(map);//{杨过=小龙女, 尹志平=小龙女, 李晨=范冰冰2, 冷锋=龙小云}


    }

    public static void show02() {
        //创建Map集合对象,多态
        Map<String, Integer> map = new HashMap<>();
        map.put("赵丽颖", 165);
        map.put("杨幂", 168);
        map.put("林志玲", 176);
        System.out.println(map);
        //V remove (Object key):把指定的键 所对应的键值对元素 在Map中删除,返回被删除元素的值
        Integer v1 = map.remove("林志玲");
        System.out.println("v1:" + v1);  //v1:176
        System.out.println(map);      // {赵丽颖=165, 杨幂=168}

        Integer v2 = map.remove("杨丞琳");
        System.out.println("v2:" + v2);//null
        System.out.println(map);

    }

    public static void show03() {
        //创建Map集合对象,多态
        Map<String, Integer> map = new HashMap<>();
        map.put("赵丽颖", 165);
        map.put("杨幂", 168);
        map.put("林志玲", 176);
        //V get (Object key):根据指定的键 在Map集合中获取对应的值
        Integer v1 = map.get("赵丽颖");
        System.out.println("v1:" + v1);  //v1:165
        Integer v2 = map.get("迪丽热巴");
        System.out.println("v2:" + v2);  //v2:null

    }

    public static void show04() {
        //创建Map集合对象,多态
        Map<String, Integer> map = new HashMap<>();
        map.put("赵丽颖", 165);
        map.put("杨幂", 168);
        map.put("林志玲", 176);
       // boolean containsKey (Object key):判断集合中是否包含指定的键
        boolean b1=map.containsKey("古力娜扎");
        boolean b2=map.containsKey("杨幂");
        System.out.println("b1:"+b1);  //b1:false
        System.out.println("b2:"+b2);  //b2:true
    }
}
